package nav

/*
#include<stdint.h>
#include<stdbool.h>
extern void nav_duDebugDrawNavMesh(void * dd,void * mesh,unsigned char flags);
extern void nav_duDebugDrawNavMeshBVTree(void * dd,void * mesh);
extern void nav_duDebugDrawNavMeshNodes(void * dd,void * query);
extern void nav_duDebugDrawNavMeshPoly(void * dd,void * mesh,unsigned int ref,unsigned int col);
extern void nav_duDebugDrawNavMeshPolysWithFlags(void * dd,void * mesh,unsigned short polyFlags,unsigned int col);
extern void nav_duDebugDrawNavMeshPortals(void * dd,void * mesh);
extern void nav_duDebugDrawNavMeshWithClosedList(void * dd,void * mesh,void * query,unsigned char flags);
extern void nav_duDebugDrawTileCacheContours(void * dd,void * lcset,void * orig,float cs,float ch);
extern void nav_duDebugDrawTileCacheLayerAreas(void * dd,void * layer,float cs,float ch);
extern void nav_duDebugDrawTileCacheLayerRegions(void * dd,void * layer,float cs,float ch);
extern void nav_duDebugDrawTileCachePolyMesh(void * dd,void * lmesh,void * orig,float cs,float ch);

*/
import "C"
import "unsafe"
import "gitee.com/hasika/cgo"

var _ unsafe.Pointer
var _ cgo.NotUsed

/*
void duDebugDrawNavMesh(duDebugDraw * dd, dtNavMesh const& mesh, unsigned char flags)
*/
func DuDebugDrawNavMesh(dd DuDebugDrawPtr, mesh DtNavMeshPtr, flags uint8) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_mesh unsafe.Pointer
	var wrap_arg_flags C.uchar
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_mesh = (unsafe.Pointer)(mesh)
	wrap_arg_flags = (C.uchar)(flags)
	C.nav_duDebugDrawNavMesh(wrap_arg_dd, wrap_arg_mesh, wrap_arg_flags)
}

/*
void duDebugDrawNavMeshBVTree(duDebugDraw * dd, dtNavMesh const& mesh)
*/
func DuDebugDrawNavMeshBVTree(dd DuDebugDrawPtr, mesh DtNavMeshPtr) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_mesh unsafe.Pointer
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_mesh = (unsafe.Pointer)(mesh)
	C.nav_duDebugDrawNavMeshBVTree(wrap_arg_dd, wrap_arg_mesh)
}

/*
void duDebugDrawNavMeshNodes(duDebugDraw * dd, dtNavMeshQuery const& query)
*/
func DuDebugDrawNavMeshNodes(dd DuDebugDrawPtr, query DtNavMeshQueryPtr) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_query unsafe.Pointer
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_query = (unsafe.Pointer)(query)
	C.nav_duDebugDrawNavMeshNodes(wrap_arg_dd, wrap_arg_query)
}

/*
void duDebugDrawNavMeshPoly(duDebugDraw * dd, dtNavMesh const& mesh, dtPolyRef ref, unsigned int const col)
*/
func DuDebugDrawNavMeshPoly(dd DuDebugDrawPtr, mesh DtNavMeshPtr, ref uint32, col uint32) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_mesh unsafe.Pointer
	var wrap_arg_ref C.uint
	var wrap_arg_col C.uint
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_mesh = (unsafe.Pointer)(mesh)
	wrap_arg_ref = (C.uint)(ref)
	wrap_arg_col = (C.uint)(col)
	C.nav_duDebugDrawNavMeshPoly(wrap_arg_dd, wrap_arg_mesh, wrap_arg_ref, wrap_arg_col)
}

/*
void duDebugDrawNavMeshPolysWithFlags(duDebugDraw * dd, dtNavMesh const& mesh, unsigned short const polyFlags, unsigned int const col)
*/
func DuDebugDrawNavMeshPolysWithFlags(dd DuDebugDrawPtr, mesh DtNavMeshPtr, polyFlags uint16, col uint32) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_mesh unsafe.Pointer
	var wrap_arg_polyFlags C.ushort
	var wrap_arg_col C.uint
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_mesh = (unsafe.Pointer)(mesh)
	wrap_arg_polyFlags = (C.ushort)(polyFlags)
	wrap_arg_col = (C.uint)(col)
	C.nav_duDebugDrawNavMeshPolysWithFlags(wrap_arg_dd, wrap_arg_mesh, wrap_arg_polyFlags, wrap_arg_col)
}

/*
void duDebugDrawNavMeshPortals(duDebugDraw * dd, dtNavMesh const& mesh)
*/
func DuDebugDrawNavMeshPortals(dd DuDebugDrawPtr, mesh DtNavMeshPtr) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_mesh unsafe.Pointer
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_mesh = (unsafe.Pointer)(mesh)
	C.nav_duDebugDrawNavMeshPortals(wrap_arg_dd, wrap_arg_mesh)
}

/*
void duDebugDrawNavMeshWithClosedList(duDebugDraw * dd, dtNavMesh const& mesh, dtNavMeshQuery const& query, unsigned char flags)
*/
func DuDebugDrawNavMeshWithClosedList(dd DuDebugDrawPtr, mesh DtNavMeshPtr, query DtNavMeshQueryPtr, flags uint8) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_mesh unsafe.Pointer
	var wrap_arg_query unsafe.Pointer
	var wrap_arg_flags C.uchar
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_mesh = (unsafe.Pointer)(mesh)
	wrap_arg_query = (unsafe.Pointer)(query)
	wrap_arg_flags = (C.uchar)(flags)
	C.nav_duDebugDrawNavMeshWithClosedList(wrap_arg_dd, wrap_arg_mesh, wrap_arg_query, wrap_arg_flags)
}

/*
void duDebugDrawTileCacheContours(duDebugDraw * dd, dtTileCacheContourSet const& lcset, float const * orig, float const cs, float const ch)
*/
func DuDebugDrawTileCacheContours(dd DuDebugDrawPtr, lcset DtTileCacheContourSetPtr, orig *float32, cs float32, ch float32) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_lcset unsafe.Pointer
	var wrap_arg_orig unsafe.Pointer
	var wrap_arg_cs C.float
	var wrap_arg_ch C.float
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_lcset = (unsafe.Pointer)(lcset)
	wrap_arg_orig = (unsafe.Pointer)(orig)
	wrap_arg_cs = (C.float)(cs)
	wrap_arg_ch = (C.float)(ch)
	C.nav_duDebugDrawTileCacheContours(wrap_arg_dd, wrap_arg_lcset, wrap_arg_orig, wrap_arg_cs, wrap_arg_ch)
}

/*
void duDebugDrawTileCacheLayerAreas(duDebugDraw * dd, dtTileCacheLayer const& layer, float const cs, float const ch)
*/
func DuDebugDrawTileCacheLayerAreas(dd DuDebugDrawPtr, layer DtTileCacheLayerPtr, cs float32, ch float32) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_layer unsafe.Pointer
	var wrap_arg_cs C.float
	var wrap_arg_ch C.float
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_layer = (unsafe.Pointer)(layer)
	wrap_arg_cs = (C.float)(cs)
	wrap_arg_ch = (C.float)(ch)
	C.nav_duDebugDrawTileCacheLayerAreas(wrap_arg_dd, wrap_arg_layer, wrap_arg_cs, wrap_arg_ch)
}

/*
void duDebugDrawTileCacheLayerRegions(duDebugDraw * dd, dtTileCacheLayer const& layer, float const cs, float const ch)
*/
func DuDebugDrawTileCacheLayerRegions(dd DuDebugDrawPtr, layer DtTileCacheLayerPtr, cs float32, ch float32) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_layer unsafe.Pointer
	var wrap_arg_cs C.float
	var wrap_arg_ch C.float
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_layer = (unsafe.Pointer)(layer)
	wrap_arg_cs = (C.float)(cs)
	wrap_arg_ch = (C.float)(ch)
	C.nav_duDebugDrawTileCacheLayerRegions(wrap_arg_dd, wrap_arg_layer, wrap_arg_cs, wrap_arg_ch)
}

/*
void duDebugDrawTileCachePolyMesh(duDebugDraw * dd, dtTileCachePolyMesh const& lmesh, float const * orig, float const cs, float const ch)
*/
func DuDebugDrawTileCachePolyMesh(dd DuDebugDrawPtr, lmesh DtTileCachePolyMeshPtr, orig *float32, cs float32, ch float32) {
	var wrap_arg_dd unsafe.Pointer
	var wrap_arg_lmesh unsafe.Pointer
	var wrap_arg_orig unsafe.Pointer
	var wrap_arg_cs C.float
	var wrap_arg_ch C.float
	wrap_arg_dd = (unsafe.Pointer)(dd)
	wrap_arg_lmesh = (unsafe.Pointer)(lmesh)
	wrap_arg_orig = (unsafe.Pointer)(orig)
	wrap_arg_cs = (C.float)(cs)
	wrap_arg_ch = (C.float)(ch)
	C.nav_duDebugDrawTileCachePolyMesh(wrap_arg_dd, wrap_arg_lmesh, wrap_arg_orig, wrap_arg_cs, wrap_arg_ch)
}

type EnumDrawNavMeshFlags uint32

const (
	EnumDrawNavMeshFlags_DU_DRAWNAVMESH_OFFMESHCONS EnumDrawNavMeshFlags = 1
	EnumDrawNavMeshFlags_DU_DRAWNAVMESH_CLOSEDLIST  EnumDrawNavMeshFlags = 2
	EnumDrawNavMeshFlags_DU_DRAWNAVMESH_COLOR_TILES EnumDrawNavMeshFlags = 4
)
